﻿using System;

namespace nExt.Core.Extensions
{
	/// <summary>
	/// DateTimeExtensions
	/// </summary>
	public static class DateTimeExtensions
	{
		/// <summary>
		/// Konvertiert ein Datum zu einem Unix Stamp
		/// </summary>
		public static int ToUnixTimeStamp(this DateTime dateTime)
		{
			DateTime unixStartDate = new DateTime(1970, 1, 1);
			TimeSpan timeSpan = new TimeSpan(dateTime.Ticks - unixStartDate.Ticks);
			return (Convert.ToInt32(timeSpan.TotalSeconds)); // Das Delta als Gesammtzahl der Sekunden ist der Timestamp
		}

		/// <summary>
		/// Konvertiert ein Unix timestamp zu einem Datum
		/// </summary>
		public static DateTime FromUnixTimeStamp(this int timestamp)
		{
			DateTime unixStartDate = new DateTime(1970, 1, 1);
			return unixStartDate.AddSeconds(timestamp); // den Timestamp addieren
		}

		/// <summary>
		/// Konvertiert ein Unix timestamp zu einem Datum
		/// </summary>
		public static DateTime FromUnixTimeStampInMilliseconds(double timestamp)
		{
			//  gerechnet wird ab der UNIX Epoche
			var dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
			// den Timestamp addieren           
			dateTime = dateTime.AddMilliseconds(timestamp);
			return dateTime;
		}
	}
}